#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>


void ip_convert(const char *p) {
   
    struct in_addr in;
    // 将ip转换为网络地址
    in_addr_t net_addr = inet_addr(p);
    printf("network: %#x\n", net_addr);
    if (net_addr == INADDR_NONE) {
        perror("Fail to inet_addr");
        exit(EXIT_FAILURE);
    }

   

    //  方式一
    // in.s_addr = net_addr; // 保存网络地址
    // 尝试将网络地址转换为ip
    // printf("ip: %s\n", inet_ntoa(in));

    // 方式二  sturct in_addr * 相当于s_addr 的首地址， 所以可以强转得到指向结构体类型的指针变量， 然后
    in = *((struct in_addr *)&net_addr); 
    printf("ip: %s\n", inet_ntoa(in));

}

int main(int argc, char const *argv[])
{
    ip_convert(argv[1]);
    return 0;
}
